package io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) throws IOException {
        //创建输出流用于向路径文件中写入数据(输出流默认是覆盖写操作)
        /*
         * 如果创建流是执行的文件已经存在了，n那么就会将文件中的所有数据全部清除，在重新对文件中进行写入
         *
         * 输出文件流也可以使用追加模式启动
         *  FileOutputStream(String gilename,Boolean append)
         *  FileOutputStream(File file,boolean append)
         *  如果第二个参数传入true，则文件流创建时为追加模式
         *  如果此事指定的文件已经存在则文件流在创建时会将文件数据全部保留，通过当前流写出的数据会陆续的追加到文件中
         * */
        FileOutputStream fileOutputStream = new FileOutputStream("./note.txt", true); //参数(文件路径，是否为追加模式)
        //Scanner方法实例 用于获取用户输入的信息
        Scanner scanner = new Scanner(System.in);
        //String类型实例str用于存放接收到的字符串信息
        String str;
        //不确定循环次数
        while (true) {
            //打印提示信息
            System.out.print("请输入想要写入文件的数据:");
            //将用户输入的字符串信息存放到str当中
            str = scanner.nextLine();
            //判断str中的字符串是否为exit(退出)
            //当对字符串进行比较时，字面量在前 变量在作为参数,可以预防空指针异常
            if ("exit".equals(str)) {
                //当str中的字符串为exit时，执行break结束循环
                break;
            }
            //使用String类提供的getBytes将字符串转换为UTF-8模式的字节并存以byte[]返回
            byte[] bt = str.getBytes(StandardCharsets.UTF_8);
            //将bt中存放好的由字符串转换而来的字节写入到note.txt文件当中(此处写入不是追加 是重写)
            fileOutputStream.write(bt);
        }
        //关闭输出流进行节源
        fileOutputStream.close();

        //创建输入流实例
        FileInputStream fileInputStream = new FileInputStream("./note.txt");
        //通过FileInputStream方法中的available获取文件的大概大小
        byte[] byt = new byte[fileInputStream.available()];
        //将设定好大小的byte数组作为参数传递给read方法 并且read方法将获取到多少个字节返回
        int line = fileInputStream.read(byt);
        //打印获取到了多少个字节
        System.out.println("读取的长度为:" + line);
        //通过String类自带的构造器 对byte数组中存放的字节进行转换
        String str2 = new String(byt, StandardCharsets.UTF_8);
        //打印获取到的结果
        System.out.println("文件中的内容:" + str2);
    }
}
